const router = require('koa-router')(),
    sha1 = require('sha1'),
    msql = require('../lib/db'),
    helper = require('../utils/helper')

// 路由守卫
router.use(async (ctx, next) => {
    // 获取当前的地址  如果有login则放开路由
    let url = ctx.url;
    // 包含登录或者验证时让程序通过，不通过无法验证用户
    if (url.includes('/login')||url.includes('/checkLogin')) {
 
        await next();

    } else {
       
        // 如果不加当前url的判断，会进入死循环，一直重定向，访问admin.js
        if (!ctx.session.admin) {

            ctx.redirect("/admin/login")

        } else {
            await next();
        }
    }

})

// 登录
router.get('/login', ctx => {
    ctx.render('login');
})

// 验证登录
router.post('/checkLogin',async ctx=>{
    let {uname,upwd} = ctx.request.body;
    // let pwd = '123456';
    // let res = sha1(pwd).slice(0,25);
    // 验证该用户是否存在
    upwd = sha1(upwd).slice(0,25);
    let sql =`SELECT username FROM admin WHERE username='${uname}' AND pwd='${upwd}'`;
    let res = await msql.query(sql);
    if(res.length>0){
        ctx.body='success';
        // 创建session
        ctx.session.admin = uname;
    }else{
        ctx.body='error17'
    }
   
})


// 根 /admin
router.get('/', ctx => {
    // 管理员用户名
    let uname = ctx.session.admin
    ctx.render('admin',{uname})
})

// 角色新增
router.get('/role-add', async ctx => {
    
    ctx.render('role-add')
})
// 角色新增执行
router.post('/role-add-do', async ctx => {
    let { title } = ctx.request.body;
    // 接受文本域
    let path = ctx.request.files.path;
    // 生成地址
    let url = '';
    // 保存到uploads中
    if (path) {
        url = helper.upload(path);
    }
    // 保存到数据库中
    let sql = `INSERT INTO roles SET name='${title}',path='${url}'`
    let res = await msql.query(sql);

    if (res.affectedRows > 0) {
        ctx.body = 'success'
    } else {
        ctx.body = 'fail'
    }
    
})

// 退出登录
router.get('/exit',ctx=>{
    // 清除session
    ctx.session= null;
    // 返回结果
    ctx.body = 'success';
})



module.exports = router.routes()